home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’97 / Warrior’s Progress / source code / Source / Libraries / Trees / Tree.h < prev    next >
Encoding:
Text File  |  1997-06-28  |  886 b   |  47 lines  |  [TEXT/CWIE]

  1. // Tree.h
  2.  
  3. #ifndef Tree_h
  4. #define Tree_h
  5.  
  6. #ifndef Sequence_h
  7. #include "Sequence.h"
  8. #endif
  9.  
  10. class TreeNode;
  11.  
  12. class Tree: public Sequence<Tree,TreeNode>
  13.   {
  14.     friend class TreeNode;
  15.     
  16.     private:
  17.         TreeNode *root;
  18.         
  19.         TreeNode *FirstNode() const;
  20.         TreeNode *LastNode() const;
  21.         
  22.     public:
  23.         Tree();
  24.         ~Tree();
  25.         
  26.         void Add( TreeNode&, AtRoot );
  27.         void Add( TreeNode&, Before, const TreeNode& );
  28.         void Add( TreeNode&, After, const TreeNode& );
  29.         
  30.         void Remove( TreeNode& );
  31.         void RemoveAll();
  32.         
  33.         bool IsEmpty() const                    { return root == 0; }
  34.         
  35.         const TreeNode *Root() const        { return root; }
  36.         const TreeNode *First() const        { return FirstNode(); }
  37.         const TreeNode *Last() const        { return LastNode(); }
  38.         
  39.         TreeNode *Root()                        { return root; }
  40.         TreeNode *First()                        { return FirstNode(); }
  41.         TreeNode *Last()                        { return LastNode(); }
  42.         
  43.         bool Valid() const;
  44.   };
  45.  
  46. #endif
  47.